node学习笔记——一些概念与API

路径操作模块(path)

在文件操作过程中,都必须只用物理路径(绝对路径)

path模块提供了一系列与路径相关的API

  • path.join([p1][,p2][,p3]…) => 连接多个路径
  • path.basename(p, ext) =>获取文件名
  • path.dirname(p) =>获取文件路径
  • path.extname(p) =>获取文件扩展名
  • path.format(obj) 和 path.parse(p) => 从对象中返回路径字符串,和 path.parse 相反。和返回路径字符串的对象
  • path.relative(from, to) => 获取从from 到 to 的相对路径

同步或异步调用

fs 模块对文件几乎所有的操作都有同步和异步两种形式

例如:readFile()readFileSync()

区别:

  • 同步会阻塞代码的执行,异步则不会
  • 异步调用将会读取任务下达到任务队列,直到任务执行完成才会回调
  • 异常处理方面,同步必须使用 try catch 方式,异步可以通过回调函数的第一个参数

流的方式读取(readline)

对比普通的方式读取文件,流的方式的优点:内存占用始终是 1024 个字节,内存占用少,普通的方式是整体直接放入内存,内存占用高。

1
2
3
4
5
6
7
8
9
10
var data = '';
streamReader.on('data', (chunk) => {
//chunk 只是文档的一个片段 不完整
data += chunk.toString();
});

streamReader.on('end', () => {
//通知已经结束了,此时data是完整的
console.log(data);
});

如下图所示:

如图,不断的读取文件内容到内存创建的 Buffer 中,然后通过 buffer 返回到我们的代码中,这就是流的读取方式。

文件写入

确保操作没有额外的问题,一定使用绝对路径的方式

  • 异步文件写入:fs.writeFile(file,data[,option],callback(err))
  • 同步文件写入:fs.writeFileSync(file,data[,option])
  • 流式文件写入:fs.createWriteStream(path[,option])

目录操作

创建一个目录

  • fs.mkdir(path[,model],callback)
  • fs.mkdirSync(path[,model])

删除一个空目录

  • fs.rmdir(path,callback)
  • fs.rmdirSync(path)

读取一个目录

  • fs.readdir(path,callback(err,files))
  • fs.readdirSync(path) // => 返回files

监视文件变化

  • fs.watchFile(filename[,options],;ostemer(curr,prev))
    -options:{persistent,interval}
  • fs.warch(filename[,options] [,listener])

浏览器的本质作用

  1. 将用户在地址栏中输入的 URL 地址封装成为请求消息(包含请求头和请求体字符串)
  2. 将得到的消息通过 Socket 的方式发送到所请求的网站服务器
  3. 接受服务器返回响应消息(包含响应头和相应体的字符串)
  4. 解析响应消息中的数据,渲染到界面上



完~